#ifndef GROUPCHATWINDOW_H
#define GROUPCHATWINDOW_H

#include <QWidget>
#include "mylistwidgetitem.h"
#include "myqqfacewindow.h"
#include "addgroupnotice.h"
#include<QVector>

namespace Ui {
class GroupChatWindow;
}

class GroupChatWindow : public QWidget
{
    Q_OBJECT
public:
    explicit GroupChatWindow(struct st_personData user,struct st_gData data,QWidget *parent = nullptr);
    ~GroupChatWindow();
    // 添加一条文本消息记录
    void addTextRecord(struct st_msg msg);
    // 添加一条表情记录
    void addJoyRecord(struct st_msg msg);
    // 添加一条新成员加入记录
    void addNewGroupMemberRecord(struct st_gMemberData gdata);
    // 添加一条新成员退出记录
    void addGroupMemberQuitRecord(struct st_gMemberData gdata);

    void Show();

protected:
    void closeEvent(QCloseEvent* event)override;

signals:
    void sig_addGroupFile(QVariant);
    void sig_addGroupNotice(QVariant);
    void sig_addGroupMember(QVariant);
    void sig_deleteGroupMember(QVariant);

private slots:
    // 更新QListWidgetItem的大小
    void updateItemSize(QSize,int);
    // 添加一个群文件
    void slot_addGroupFile(QVariant);
    // 添加一个群公告
    void slot_addGroupNotice(QVariant);
    // 添加一个群成员
    void slot_addGroupMember(QVariant);
    // 删除一个群成员
    void slot_deleteGroupMember(QVariant);

    void on_btn_send_clicked();

    void on_btn_joy_clicked();

    void on_btn_uploadfile_clicked();

    void on_btn_history_clicked();

    void on_btn_gnotice_clicked();

private:
    Ui::GroupChatWindow *ui;
    int openNum = 1;                // 记录窗口打开次数,如果是第一次打开,那么拉取群文件信息
    int historyMsgNum = 0;
    int row_H = 50;                 // MyListWidgetItem的高度
    int autoSeq = 0;                // 自增,记录item在QListWidget中的位置
    struct st_personData m_user;    // 用户资料
    struct st_gData m_group;        // 群资料
    QPixmap user_head;              // 用户头像
    QPixmap friend_head;            // 好友头像
    MyQQFaceWindow* qqfaceWindow;   // qq表情窗口
    AddGroupNotice* gnoticeWindow;  // 发布群公告
};

#endif // GROUPCHATWINDOW_H
